package cn.ondraw.ragflow.service;

import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.response.KbCreateResponse;

import java.util.Map;

public interface RagFlowKnowledgeBaseService {
    /**
     * 创建知识库
     *
     * @param request 创建请求对象
     * @return 创建响应对象
     */
    KbCreateResponse create(KbCreateRequest request);

    /**
     * 更新知识库
     *
     * @param request 更新请求对象
     * @return 通用响应结果
     */
    Map<String, Object> update(KbUpdateRequest request);

    /**
     * 获取知识库详情
     *
     * @return 知识库详情
     */
    Map<String, Object> detail(String kbId);

    /**
     * 列出知识库
     *
     * @param request 列表请求对象
     * @return 知识库列表及总数
     */
    Map<String, Object> list(KbListRequest request);

    /**
     * 删除知识库
     *
     * @param request 删除请求对象
     * @return 通用响应结果
     */
    Map<String, Object> rm(KbRmRequest request);

    /**
     * 列出单个知识库的标签
     *
     * @param kbId 知识库 ID
     * @return 标签列表
     */
    Map<String, Object> listTags(String kbId);

    /**
     * 列出多个知识库的标签
     *
     * @param request 标签请求对象
     * @return 标签列表
     */
    Map<String, Object> listTagsFromKbs(KbTagsRequest request);

    /**
     * 删除知识库的标签
     *
     * @param request 删除标签请求对象
     * @return 通用响应结果
     */
    Map<String, Object> rmTags(KbRmTagsRequest request);

    /**
     * 重命名知识库的标签
     *
     * @param request 重命名标签请求对象
     * @return 通用响应结果
     */
    Map<String, Object> renameTags(KbRenameTagRequest request);

    /**
     * 获取知识库的知识图谱
     *
     * @param kbId 知识库 ID
     * @return 知识图谱数据
     */
    Map<String, Object> knowledgeGraph(String kbId);

    /**
     * 删除知识库的知识图谱
     *
     * @param kbId 知识库 ID
     * @return 通用响应结果
     */
    Map<String, Object> deleteKnowledgeGraph(String kbId);
}
